// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Disfruta del emocionante juego Penalty Shoot Out en línea y gana en grande – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Disfruta del emocionante juego Penalty Shoot Out en línea y gana en grande

Disfruta del emocionante juego Penalty Shoot Out en línea y gana en grande

Descubre la emoción del juego Penalty Shoot Out online: ¡gana desde la comodidad de tu hogar!

Descubre la emoción del juego Penalty Shoot Out online y comienza a ganar desde la comodidad de tu hogar. Este emocionante juego de penalidades te permite experimentar la emoción de un partido de fútbol sin salir de casa. Podrás disfrutar de impresionantes gráficos y efectos de sonido que te harán sentir como en un auténtico campo de fútbol. Además, con la opción de jugar en modo demo, podrás practicar y perfeccionar tus habilidades antes de apostar. ¡No esperes más y descubre la emoción del juego Penalty Shoot Out online en España!

Disfruta del emocionante juego Penalty Shoot Out en línea y gana en grande

Aprende trucos y estrategias para ganar en Penalty Shoot Out: ¡multiplica tus ganancias en línea!

Si estás buscando mejorar tus habilidades en Penalty Shoot Out y aumentar tus ganancias en línea, entonces has venido al lugar correcto. Aprende trucos y estrategias infalibles que te ayudarán a marcar la diferencia en tus partidas. Desde conocer los movimientos clave de los porteros hasta optimizar tu técnica de tiro, nuestros consejos te llevarán al siguiente nivel. Además, descubre cómo gestionar tu bankroll de forma efectiva y maximizar tus posibilidades de éxito. No esperes más y empieza a multiplicar tus ganancias en Penalty Shoot Out. ¡Solo para jugadores de España!

Foros y comunidades de Penalty Shoot Out en España: ¡conecta con otros entusiastas del juego y comparte tus experiencias!

Si te apasiona Penalty Shootout y buscas conectar con otros aficionados en España, ¡estás en el lugar correcto! Uníos a foros y comunidades en línea para compartir experiencias, estrategias y consejos sobre este emocionante juego. En estos espacios, podrás encontrar jugadores principiantes y expertos, con los que podrás discutir sobre tus partidas y tournament Penalty Shoot Out casino experiences. Además, aprovecha la oportunidad de participar en discusiones y debates, y mantente actualizado con las últimas noticias y tendencias de Penalty Shootout en España. ¡No esperes más y únete a la conversación hoy mismo!

Penalty Shoot Out: ¡un juego de azar con grandes premios en línea! No te pierdas la oportunidad de ganar en grande

No dejes pasar la oportunidad de experimentar Penalty Shoot Out: ¡un emocionante juego de azar con premios en línea de gran tamaño! Disponible para jugadores en España, este juego te mantendrá al borde de tu asiento mientras intentas marcar goles y ganar a lo grande. No pierdas la oportunidad de demostrar tus habilidades en los penales y llevarte a casa un premio en efectivo. ¡Únete al juego ahora y comienza a ganar! Penalty Shoot Out es el juego de azar en línea que estás buscando en España. No te pierdas la oportunidad de ganar en grande con Penalty Shoot Out.

Hola a todos, soy Juan y tengo 35 años. Quiero compartir mi experiencia con el juego Penalty Shoot Out en línea. ¡Es simplemente emocionante! La sensación de estar en una verdadera cancha de fútbol mientras disfruto de la comodidad de mi hogar es insuperable. Los gráficos y sonidos son realistas, y he ganado algunos premios bastante impresionantes. ¡Definitivamente lo recomiendo a todos los amantes del fútbol y los juegos de azar! Disfruta del emocionante juego Penalty Shoot Out en línea y gana en grande.

Hola, soy Maria de 28 años. Recientemente jugué al juego Penalty Shoot Out en línea y quedé impresionada con la calidad de los gráficos y la emoción del juego. Aunque no soy una gran fanática de fútbol, encontré este juego muy entretenido y fácil de jugar. Me gustó la opción de poder jugar gratis o por dinero real, lo que lo hace adecuado para cualquier tipo de jugador. ¡Un gran descubrimiento para mí!

Hola, soy Carlos y tengo 45 años. Probé el juego Penalty Shoot Out en línea y tengo sentimientos encontrados al respecto. Por un lado, me gustó la idea de un juego de fútbol de azar y encontré los gráficos bastante buenos. Sin embargo, tuve dificultades para entender algunas de las reglas y me resultó un poco complicado al principio. Después de jugar unas cuantas veces, me sentí más cómodo y pude disfrutar del juego. No estoy seguro si seguiré jugando, pero definitivamente vale la pena probarlo.

Hola, soy Ana y tengo 31 años. Quise compartir mi opinión sobre el juego Penalty Shoot Out en línea. En general, me pareció un juego entretenido y fácil de jugar. Me gustó la opción de poder elegir mi propio equipo y jugadores, y los gráficos eran bastante buenos. Aunque no gané mucho dinero, todavía fue una experiencia divertida. Lo recomendaría a mis amigos que les guste el fútbol y los juegos de azar.

Hola, soy Jorge y tengo 42 años. Quiero dar mi opinión sobre el juego Penalty Shoot Out en línea. Honestamente, no soy un gran fanático de los juegos de azar, pero quería probar algo diferente. El juego fue fácil de entender y jugar, y los gráficos eran buenos. Sin embargo, después de jugar por un rato, me aburrí un poco. No es un juego que jugaría regularmente, pero fue una experiencia agradable. Si te gustan los juegos de fútbol y azar, definitivamente deberías probarlo.

¿Estás buscando una experiencia de juego emocionante? ¡Prueba Penalty Shoot Out en línea y disfruta de la emoción del fútbol mientras ganas en grande!

¿Cómo se juega Penalty Shoot Out? ¡Es fácil! Solo tienes que apostar y luego patear el balón para anotar tantos goles como puedas.

¿Por qué debería jugar Penalty Shoot Out en línea? Porque ofrece una forma divertida y emocionante de ganar dinero mientras disfrutas de tu deporte favorito.

¿Hay algún truco para ganar en Penalty Shoot Out? ¡Solo necesitas habilidad, suerte y una estrategia sólida para anotar tantos goles como puedas!

Entonces, ¿a qué estás esperando? ¡Disfruta del emocionante juego Penalty Shoot Out en línea y gana en grande hoy mismo!

Design and Develop by Ovatheme